This invention relates to printers, and more particularly, to a printing system that assumes complete control of the printer port.
Presently there are two categories of printing systems, intelligent and dumb. The dumb category is the host based, or sleek, approach. The intelligent category differs in that it sends a mixture of rendered and non-rendered to the printer. It is similar to the concept of page description language (PDL) page printers like the Hewlett-Packard PCL page printers, in that the data sent across the I/O channel needs to be processed and rendered by the printer. A dumb printer only has to deal with placing an already rasterized image on paper, whereas the intelligent printer requires additional technology in the printer such as additional memory and processing power, to form the page for printing before starting the printing process.
Intelligent laser printers receive data to be printed from a host computer in the form of a control language over a standard interface. The control language data stream includes print function commands with interspersed print data. The laser printer responds by converting the received data stream into a list of simple commands, called display commands which describe what must be printed. The printer processes the display commands and renders the described objects into a raster bit map. This procedure generally requires a full page raster bit map memory, as the same memory is used for succeeding pages.
The use of control languages to enable data transfers between host computers and laser printers is widespread and must be accommodated on a commercial laser printer if that printer is to appeal to a large customer base. Such control language data is transferred to the laser printer over a standard, input/output (I/O) interface that exhibits a rather slow data transfer rate. Using that interface, a laser printer converts an incoming command language data stream into a xe2x80x9cpage intermediatexe2x80x9d form (consisting of display commands) which is then converted to raster image data. The raster image data conversion process causes the intermediate page representation to be divided into a number of strips, with groups of the strips being sequentially processed to raster pixel data (video data for the print engine). The print engine is only started after an initial group of strips have been converted to raster pixel data. At this time the laser print engine prints the data and continues at a fixed speed, until all strips have been printed. If new rasterized data is not available at a rate that keeps up with the print engine""s operation, a print xe2x80x9coverrunxe2x80x9d occurs and the page is not printable. As a result, considerable time is lost due to the substantial preprocessing which must occur before the print engine is started.
Some page printers employ a high speed page printing technique termed the xe2x80x9cSleekxe2x80x9d mode or host based printing that avoids the substantial preprocessing that occurs when print data is transferred using a print control language. In the Sleek mode, the host computer converts user input data into a full raster pixel image and then feeds that raster image as pixel data, over an interface at a high data transfer rate. Certain prior art page printers employ a separate video port that accepts video raster image data at a multi-megabit per second rate. While such printers provide highly efficient print rates, the costs inherent in the separate video ports on both the printer and the host and circuitry for handling data over those ports adds substantially to the system""s cost. Nevertheless, the Sleek mode may enable a substantial increase in print speed of a laser page printer.
The most popular sleek printing system for personal desktop computers allows complete host computer control over a printed page. In this sleek printing system, the host rasterizes all page data and sends page information and print control parameters to the page printer. By utilizing a high performance microprocessor on the host computer, the page image can be rasterized faster than letting the lower performance printer rasterize the image. Control of the printing process is provided by the host using logical channels over an IEEE 1284 compliant parallel port. Logical channels provide the means for page definition, page control and status gathering. Because the data transmission rates from the host computer being more xe2x80x9cburstyxe2x80x9d and sometimes slower than the video data transmission rate to the print engine, a elastic memory buffer must be provided within the printer for a functional sleek solution.
Once the host computer has rasterized the imaged, it transmits the data to the printer hardware. For transmission, the host obtains a xe2x80x9cbandxe2x80x9d of data and transmits it to the printer. During transmission of a band of data, the host never selects another logical channel. Indeed the sleek printing system is dedicated to transmitting a band of data once transmission begins.
The WINDOWS printing system (WPS) (xe2x80x9cWINDOWSxe2x80x9d is a trademark of the Microsoft Corporation, Redmond, Washington) was designed to give the user valid printer status 100% of the time, even during idle time. Status may include messages indicating: the printer is out of paper, the toner cartridge is missing, etc. Ensuring this kind of status requires constant uninterrupted access to the I/O port. Uninterrupted access is generally accomplished by giving the sleek printing system ownership of the port while the printing system is xe2x80x9clogicallyxe2x80x9d connected to the printer. xe2x80x9cLogicallyxe2x80x9d connected to a port means that the sleek printing system is configured such that the printer driver""s output is directed to that port.
Most operating systems allow multiple printers to be logically connected to the same port. This allows for the use of the same physical port to print to different printers by first changing the printer driver used to print an physically attaching the appropriate printer to that port. Such a scenario is common for a portable computer where the use has one type of printer at home and a different printer at work. If a sleek printing system has ownership of the port, thereby locking out another use of the port, the user must first change the logical port of the sleek printing system before the print driver can be changed.
If the host computer is running a sleek printing system, another device connected to the printer port, such as a scanner, tape drive, or camera are locked out from accessing the port until the sleek printing system is turned off.
Prior to the present invention, the sleek printing system locks the printer parallel port resource immediately after initialization. By locking down the parallel port, other printer drivers or parallel port peripherals, such as tape drives, scanners and dongles, are unable to use the parallel port.
In order to accomplish the present invention there is provided a method for sharing a port. First an operating system is started along with the host based printing system. A queue is polled waiting for a job open command from the host based printing system. Once queue receives the job open command, the port is acquired from the operating system. The task as defined by the job open command is performed. The queue is checked for any additional commands. If the queue contains additional tasks, they are executed. In the alternative where the queue is empty the monitor releases the port to the operating system.